package com.hgd.evp.admin.biz;

import com.hgd.evp.admin.vo.MenuTree;
import com.hgd.evp.common.utils.EmptyUtil;
import com.hgd.evp.common.utils.ObjectResultResponse;
import com.hgd.evp.common.utils.TreeUtil;
import org.springframework.stereotype.Service;

import com.hgd.evp.admin.entity.EMenu;
import com.hgd.evp.admin.mapper.EMenuMapper;
import com.hgd.evp.common.biz.BusinessBiz;
import tk.mybatis.mapper.entity.Example;

import java.util.ArrayList;
import java.util.List;

/**
 * 
 *
 * @author By Shang
 * @email ${email}
 * @version 2019-01-01 22:49:10
 */
@Service
public class EMenuBiz extends BusinessBiz<EMenuMapper, EMenu> {
    /**
     * 添加单条记录
     * @param eMenu 待添加记录
     * @return 结果
     */
    public ObjectResultResponse<Void> addEmenu(EMenu eMenu) {
        ObjectResultResponse<Void> oResult=new ObjectResultResponse<>();
        this.insertSelectiveBindCrt(eMenu);
        oResult.setMessage("添加菜单成功");
        return oResult;
    }

    /**
     * 获取菜单树
     * @return 菜单树
     */
    public List<MenuTree> getMenuTree() {
        List<EMenu> allEmenu = getAllEmenu();

        List<MenuTree> menuTrees=new ArrayList<>();
        allEmenu.forEach(menu-> menuTrees.add(
                new MenuTree(menu.getId(), menu.getParentId(), menu.getDescription())
        ));

        return TreeUtil.buildTree(menuTrees, -1);
    }

    /**
     * 获取全部在使用部门
     * @return 全部在使用部门
     */
    public List<EMenu> getAllEmenu(){
        Example example=new Example(EMenu.class);
        example.createCriteria().andEqualTo("enabled", "0");

        List<EMenu> eMenus = this.selectByExample(example);
        if(EmptyUtil.isEmpty(eMenus)){
            return new ArrayList<>();
        }

        return eMenus;
    }
}